//
//  UITextView+Emoticon.swift
//  emoticon模块代码
//
//  Created by rong on 15/7/10.
//  Copyright © 2015年 rong. All rights reserved.
//

import UIKit

extension UITextView {

    func insertEmoticons(emoticon: Emoticon) {
        
        if emoticon.isRemoveBtnFlag {
            //text.characters.count =  text.characters.count - 2
            deleteBackward() // textView自带的 删除 前一个文字的方法
            return
        }
        
        //textView.text = emoticon.chs
        if emoticon.emoji != nil {
            replaceRange(selectedTextRange!, withText: emoticon.emoji ?? "")
        }
        
        //问题：  如果是 emoji表情，会触发 textView 的 代理方法 textViewDidChange
        // 如果是  默认表情  或者 是 小浪花表情， 不会触发  textView 的代理方法，  可以手动触发
        if emoticon.chs != nil {
            
            //附件
            let attachment = EmoticonAttachment.emoticonString(emoticon, font: font!)
            
            //获得文本框完整的属性文本
            let strM = NSMutableAttributedString(attributedString: attributedText)
            strM.replaceCharactersInRange(selectedRange, withAttributedString: attachment)
            
            // 4. 将属性文本，重新设置给 textView
            // 4.1 记录光标位置
            let range = selectedRange
            // 4.2 设置表情图片的字体
            //strM.addAttributes([NSFontAttributeName : font!], range: NSMakeRange(range.location, 1))
            // 4.3 设置文本
            attributedText = strM
            // 4.4 恢复光标位置
            selectedRange = NSMakeRange(range.location + 1, 0)
            
            delegate?.textViewDidChange!(self)
            
        }
    }
    
    
    func emoticonText() -> String {
        
        //定义结果字符串
        var strM = String()
        
        //遍历内部细节
        attributedText.enumerateAttributesInRange(NSMakeRange(0, attributedText.length), options: NSAttributedStringEnumerationOptions(rawValue: 0))  { (dict, range, _) -> Void in
            
            // 如果字典dict中包含 NSAttachment key 就说明是图片
            // 从 “NSAttachment” 中 获取  表情的文本，  继承一个子类，专门记录表情
            print("打印出来看看 ＝＝＝＝》 \(dict)")
            
            let attachment = dict["NSAttachment"] as? EmoticonAttachment
            
            if  attachment != nil {
                print("配图 \(attachment!.chs)")
                strM += attachment!.chs ?? ""
            } else {
                //否则就是文字，利用range提取内容， 然后拼接字符串
                let str = (self.attributedText.string as NSString).substringWithRange(range)
                print("文本内容" + str)
                strM += str
            }
        }
        
        print("最终结果 \(strM)")
        
        return strM
    }


}
